package com.sourceQ.system.service.message.sms;

import com.baomidou.mybatisplus.extension.service.IService;
import com.sourceQ.system.domain.message.sms.SysSmsCode;
import com.sourceQ.system.dto.message.SmsCodeSendReqDTO;
import com.sourceQ.system.dto.message.SmsCodeUseReqDTO;
import com.sourceQ.system.dto.message.SmsCodeValidateReqDTO;

import javax.validation.Valid;

/**
 * @author: SourceQ
 * @create: 2024-04-23 09:24
 * @Description:
 */
public interface SysSmsCodeService extends IService<SysSmsCode>{
    /**
     * 创建短信验证码，并进行发送
     *
     * @param reqDTO 发送请求
     */
    void sendSmsCode(@Valid SmsCodeSendReqDTO reqDTO);

    /**
     * 验证短信验证码，并进行使用
     * 如果正确，则将验证码标记成已使用
     * 如果错误，则抛出 {@link ServiceException} 异常
     *
     * @param reqDTO 使用请求
     */
    void useSmsCode(@Valid SmsCodeUseReqDTO reqDTO);

    /**
     * 检查验证码是否有效
     *
     * @param reqDTO 校验请求
     */
    void validateSmsCode(@Valid SmsCodeValidateReqDTO reqDTO);
}
